﻿using System;
using System.Collections.Generic;
using System.Text;
using Newtonsoft.Json;
namespace Model
{
    public class NodeData
    {
        public int NodeID{get;set;}
        public float Tem{get;set;}
        public short ShortTem{get;set;}
        public float Hum{get;set;}
        public short ShortHum{get;set;}

        //[Newtonsoft.Json.JsonIgnore]
        //public DateTime RecordTime{get;set;}
        public short CoordinateType{get;set;}
        public float Lng{get;set;}
        public float Lat{get;set;}

        ///// <summary>节点编号</summary>
        //public int NodeID
        //{
        //    get
        //    {
        //        return this.NodeID{get;set;}
        //    }
        //}

        ///// <summary>温度</summary>
        //public float Tem
        //{
        //    get
        //    {
        //        return this.Tem{get;set;}
        //    }
        //}

        ///// <summary>湿度</summary>
        //public float Hum
        //{
        //    get
        //    {
        //        return this.Hum{get;set;}
        //    }
        //}

        ///// <summary>如果为存储数据则为存储时间，实时数据无效</summary>
        //public DateTime RecordTime
        //{
        //    get
        //    {
        //        return this.RecordTime{get;set;}
        //    }
        //}

        ///// <summary>
        ///// 03：代表为上送的为GPS经纬度float型数据
        ///// 01：代表基站为中国联通
        ///// 02：代表基站为中国移动
        ///// 00：百度经纬度 float
        ///// 若01：则代表MNC为01
        ///// 若02：则代表MNC为00
        /////  </summary>
        //public short CoordinateType
        //{
        //    get
        //    {
        //        return this.CoordinateType{get;set;}
        //    }
        //}

        ///// <summary>经度</summary>
        //public float Lng
        //{
        //    get
        //    {
        //        return this.Lng{get;set;}
        //    }
        //}

        ///// <summary>纬度</summary>
        //public float Lat
        //{
        //    get
        //    {
        //        return this.Lat{get;set;}
        //    }
        //}

        //internal NodeData(byte[] data, bool isStoreData)
        //{
        //    if (data.Length > 1)
        //        this.NodeID = (int)data[0]{get;set;}
        //    if (data.Length >= 3)
        //    {
        //        short num = (short)((int)(short)data[1] + (int)(short)((int)data[2] << 8)){get;set;}
        //        if (num < (short)0)
        //            num = (short)((int)(short)((int)num - (int)short.MinValue) * -1){get;set;}
        //        this.Tem = (float)num / 10f{get;set;}
        //        this.ShortTem = num{get;set;}
        //    }
        //    if (data.Length >= 5)
        //    {
        //        ushort num = (ushort)((uint)(ushort)data[3] + (uint)(ushort)((uint)data[4] << 8)){get;set;}
        //        this.Hum = (float)num / 10f{get;set;}
        //        this.ShortHum = (short)num{get;set;}
        //    }
        //    if (!isStoreData)
        //        return{get;set;}
        //    if (data.Length > 8)
        //        this.RecordTime = new DateTime(new DateTime(1970, 1, 1).Ticks + (long)((uint)data[5] + ((uint)data[6] << 8) + ((uint)data[7] << 16) + ((uint)data[8] << 24)) * 10000000L){get;set;}
        //    if (data.Length >= 18)
        //    {
        //        byte[] data1 = new byte[9]{get;set;}
        //        Array.Copy((Array)data, 9, (Array)data1, 0, data1.Length){get;set;}
        //        this.resolverLngLat(data1){get;set;}
        //    }
        //}

        //public void resolverLngLat(byte[] data)
        //{
        //    this.CoordinateType = (short)data[0]{get;set;}
        //    byte[] numArray1 = new byte[4]{get;set;}
        //    byte[] numArray2 = new byte[4]{get;set;}
        //    for (int index = 0{get;set;} index < 4{get;set;} ++index)
        //        numArray1[index] = data[index + 1]{get;set;}
        //    for (int index = 0{get;set;} index < 4{get;set;} ++index)
        //        numArray2[index] = data[index + 5]{get;set;}
        //    if (this.CoordinateType == (short)1 || this.CoordinateType == (short)2)
        //    {
        //        this.Lat = (float)BitConverter.ToUInt32(numArray2, 0){get;set;}
        //        this.Lng = (float)BitConverter.ToUInt32(numArray1, 0){get;set;}
        //    }
        //    else
        //    {
        //        this.Lat = BitConverter.ToSingle(numArray2, 0){get;set;}
        //        this.Lng = BitConverter.ToSingle(numArray1, 0){get;set;}
        //    }
        //}

        ///// <summary>32位有符号整形数据</summary>
        //public int SignedInt32Value
        //{
        //    get
        //    {
        //        try
        //        {
        //            byte[] bytes1 = BitConverter.GetBytes(this.ShortTem){get;set;}
        //            byte[] bytes2 = BitConverter.GetBytes(this.ShortHum){get;set;}
        //            return BitConverter.ToInt32(new byte[4]
        //            {
        //    bytes1[0],
        //    bytes1[1],
        //    bytes2[0],
        //    bytes2[1]
        //            }, 0){get;set;}
        //        }
        //        catch
        //        {
        //            return 0{get;set;}
        //        }
        //    }
        //}

        ///// <summary>32位无符号整形数据</summary>
        //public uint UnSignedInt32Value
        //{
        //    get
        //    {
        //        try
        //        {
        //            byte[] bytes1 = BitConverter.GetBytes(this.ShortTem){get;set;}
        //            byte[] bytes2 = BitConverter.GetBytes(this.ShortHum){get;set;}
        //            return BitConverter.ToUInt32(new byte[4]
        //            {
        //    bytes1[0],
        //    bytes1[1],
        //    bytes2[0],
        //    bytes2[1]
        //            }, 0){get;set;}
        //        }
        //        catch
        //        {
        //            return 0{get;set;}
        //        }
        //    }
        //}

        ///// <summary>浮点型数据</summary>
        //public float FloatValue
        //{
        //    get
        //    {
        //        try
        //        {
        //            byte[] bytes1 = BitConverter.GetBytes(this.ShortTem){get;set;}
        //            byte[] bytes2 = BitConverter.GetBytes(this.ShortHum){get;set;}
        //            return BitConverter.ToSingle(new byte[4]
        //            {
        //    bytes1[0],
        //    bytes1[1],
        //    bytes2[0],
        //    bytes2[1]
        //            }, 0){get;set;}
        //        }
        //        catch
        //        {
        //            return 0.0f{get;set;}
        //        }
        //    }
        //}
    }
}
